package com.eliaukjq.xunlianying;

/**
 * @Author : 佩萁
 * Description :
 * @Create : 2024/7/9 - 15:54
 */
/**
 * SynchronizedObject 类实现了 Runnable 接口，用于演示同步方法的使用。
 * 在这个类中，定义了一个同步方法 method，以确保在同一时间只有一个线程可以执行这个方法。
 */
public class SynchronizedObject implements Runnable {
    /**
     * Runnable 接口的实现方法，用于启动线程。
     * 它调用了类中的同步方法 method 来演示线程同步。
     */
    @Override
    public void run() {
        method();
    }

    /**
     * 同步方法，用于演示线程同步。
     * 使用 synchronized 关键字确保在同一时间内，只有一个线程可以执行这个方法。
     * 这个方法中模拟了一个耗时操作，通过让线程睡眠2秒来模拟。
     */
    public synchronized void method() {
        System.out.println("线程" + Thread.currentThread().getName() + "开始");
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("线程" + Thread.currentThread().getName() + "结束");
    }

    /**
     * 程序的入口点。
     * 在这里创建了两个线程，它们共享同一个 SynchronizedObject 实例，以演示同步方法的线程同步效果。
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        SynchronizedObject instance = new SynchronizedObject();
        Thread t1 = new Thread(instance);
        Thread t2 = new Thread(instance);
        t1.start();
        t2.start();
    }
}
